﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIMCObjetoNegocio;
using SIMCFachadaNegocio;

namespace SIMCPresenter
{
    public interface IConsultarRolesView : IViewBase
    {
        event EventHandler<SearchEventArgs<int>> BuscarRolesDeUsuario;
        event EventHandler<SearchEventArgs<Usuario>> ColocarRolPorDefecto;
        void BindRoles(IList<Rol> listaRoles);
    }

    public class ConsultarRolesPresenter : PresenterBase
    {
        private IConsultarRolesView mView;
        private FachadaSeguridad m_FachadaSeguridad;

        public ConsultarRolesPresenter(IConsultarRolesView view)
            : base(view)
        {
            this.mView = view;
            this.m_FachadaSeguridad = new FachadaSeguridad();
            this.Initialize();
        }

        private void Initialize()
        {
            this.mView.BuscarRolesDeUsuario += new EventHandler<SearchEventArgs<int>>(mView_BuscarRolesDeUsuario);
            this.mView.ColocarRolPorDefecto += new EventHandler<SearchEventArgs<Usuario>>(mView_ColocarRolPorDefecto);
        }

        void mView_ColocarRolPorDefecto(object sender, SearchEventArgs<Usuario> e)
        {
            try
            {
                m_FachadaSeguridad.ActualizarRolPorDefecto(e.Element.Id, e.Element.Rol.Id);
            }
            catch (Exception ex)
            {                
                throw ex;
            }
        }

        private void mView_BuscarRolesDeUsuario(object sender, SearchEventArgs<int> e)
        {
            try
            {
                IList<Rol> listaRoles = m_FachadaSeguridad.BuscarListaRol(e.Element);
                mView.BindRoles(listaRoles);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                throw;
            }
        }
    }
}
